package sample.tools;


import java.util.ArrayList;

/**
 * 作者：w on 2021-07-14.
 * 邮箱：y141111@126.com
 * 版本：v1.0
 *
 * 该模块用来解析预设路径的
 * 协议如下:
 * $BBBB,%c,%c%c%c%c%c%c%c%c%c%c%c%c%c,%c%c%c%c%c%c%c%c%c%c%c%c%c%c,\n
 * 帧头：$BBBB
 * 第二位：%c 代表第几个点，从0开始计
 * 第三位：%c%c%c%c%c%c%c%c%c%c%c%c%c 一共十三位字符型，代表纬度坐标
 * 第四位：%c%c%c%c%c%c%c%c%c%c%c%c%c%c一共十四位字符型，代表经度坐标
 * 帧尾：\n代表结束
 * 中间英文逗号分隔
 */
public class DefaultRouter {
    public static ArrayList<String[]> Router = new ArrayList<>(); //存储经纬度
    public static boolean AnalysisInfo(String str){
        String[] strArr = str.split(",");
        if (strArr[0].equals("$BBBB")){
            String[] tmpArr = new String[]{strArr[1], strArr[2], strArr[3]};
            Router.add(tmpArr);
            return true;
        }else {
            return false;
        }
    }

    /**
     * 单挑拆分数据，提取有用信息
     * @param str 原始数据传入$BBBB,%c,%c%c%c%c%c%c%c%c%c%c%c%c%c,%c%c%c%c%c%c%c%c%c%c%c%c%c%c,\n
     * @return 返回拆分好的 [index, long, lat]
     */
    public static String[] info(String str){
        String[] strArr = str.split(",");
        if (strArr[0].equals("$BBBB")){
            return new String[]{strArr[1], strArr[2], strArr[3]};
        }else {
            return new String[]{"0", "0", "0"};
        }
    }

    /**
     * 所有拆分数据，提取有用信息
     * @param str 原始数据传入$BBBB,HNS005,%c,%c%c%c%c%c%c%c%c%c%c%c%c%c,%c%c%c%c%c%c%c%c%c%c%c%c%c%c,\n$BBBB,%c,%c%c%c%c%c%c%c%c%c%c%c%c%c,%c%c%c%c%c%c%c%c%c%c%c%c%c%c,\n...
     * @return 返回拆分好的 [index, lat, long]
     */
    public static double[][] allInfo(String str){
        String[] singleMsg = str.split("\n");
        int arrLength = singleMsg.length;
        double[][] longlat = new double[2][arrLength - 2];
        for (int i = 0; i < arrLength - 2; i++){
            String[] strArr = singleMsg[i].split(",");
            longlat[0][i] = Double.parseDouble(strArr[3]);
            longlat[1][i] = Double.parseDouble(strArr[4]);
        }
        return longlat;
    }
}
